package com.yonyou.gmmc.service.testdriving.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.marketing.common.dto.testdrivingAm.TestDrivingAmDto;
import org.marketing.common.dto.testdrivingAm.TestdrivingAmFrecordDto;

import com.yonyou.gmmc.common.annotation.OracleDb;
import com.yonyou.gmmc.service.testdriving.entity.TestdrivingAmFrecordPO;
import com.yonyou.gmmc.service.testdriving.entity.TestdrivingAmPO;
import com.yonyou.gmmc.service.testdriving.model.TtTestdriveAppointment;

import tk.mybatis.mapper.common.Mapper;

@OracleDb
public interface TtTestdriveAppointmentMapper extends Mapper<TtTestdriveAppointment> {
    
    /**
    *
    * @author LiuJun
    * 试驾预约保存
    * @date 2016年11月7日
    * @param testdrivingAmPO
    */
    public void insertTestDrivingAm(TestdrivingAmPO testdrivingAmPO);
    
    /**
    *
    * @author LiuJun
    * 试驾预约更新
    * @date 2016年11月7日
    * @param testdrivingAmPO
    * @return
    */
    public long updateTestdrivingAm(TestdrivingAmPO testdrivingAmPO);
    
    
    /**
     * 
    *取得服务顾问的试驾预约信息
    * @author WangHuicheng
    * 
    * @date 2016年11月21日
    * @param dealerCode            经销商代码
    * @param salesConsultantId     服务顾问ID
    * @param status                状态
    * @param startDateFrom         预约到店开始时间
    * @param startDateEnd          预约到店结束时间
    * @return List<TestDrivingAmDto> 试驾预约信息
     */
    public List<TestDrivingAmDto> getTestDriverInfo(@Param("dealerCode")String dealerCode,
                                                    @Param("salesConsultantId")Integer salesConsultantId,
                                                    @Param("status") Integer status,
                                                    @Param("startDateFrom") Date startDateFrom,
                                                    @Param("startDateEnd") Date startDateEnd);

    /**
    *
    * @author LiuJun
    * 更新试驾预约状态
    * @date 2016年11月21日
    * @param testdrivingAmFrecordPO
    */
    public void updateTestDrivingAppointStatus(TestdrivingAmFrecordDto testdrivingAmFrecordDto);
    
    
    /**
    *
    * @author LiuJun
    * 试驾预约跟进记录-保存
    * @date 2016年11月21日
    * @param testdrivingAmFrecordPO
    */
    public void insertTestdrivingAmFrecord(TestdrivingAmFrecordPO testdrivingAmFrecordPO);
    
    /**
    *
    * @author LiuJun
    * 试驾预约跟进记录-更新
    * @date 2016年11月21日
    * @param testdrivingAmFrecordPO
    */
    public void updateTestdrivingAmFrecord(TestdrivingAmFrecordPO testdrivingAmFrecordPO);

    /**
    *
    * @author LiuJun
    * 查询试驾预约记录count
    * @date 2016年11月23日
    * @param testdriveAppointmentId
    * @return
    */
    public long queryTestDrivingAppointCount(@Param("testdriveAppointmentId") Long testdriveAppointmentId);



    /**
    *
    * @author QianKun
    * 试驾查询列表
    * @date 2016年11月16日
    * @param potentialUserId
    * @return
    */
    public List<TestDrivingAmDto> queryTestDrivingData(@Param("potentialUserId") String potentialUserId,@Param("phone") String phone,@Param("submitDateFrom") String submitDateFrom,@Param("submitDateEnd") String submitDateEnd,@Param("startDateFrom") String startDateFrom,@Param("startDateEnd") String startDateEnd,@Param("appointmentStatus") String appointmentStatus);

    /**
    *
    * @author QianKun
    * 试驾查询详情
    * @date 2016年11月15日
    * @param testdriveAppointmentId
    * @return
    */
    public List<TestDrivingAmDto> queryTestDrivingDataById(@Param("testdriveAppointmentId") String testdriveAppointmentId);
    
    public String selectPotentialByOpen(@Param("openId") String openId);
}